1. Field of the Invention
The present invention relates generally to devices connected to a computer internally or externally by a network, port, or other means of communication and interfaced to the computer by means of driver software. In particular, the present invention relates to diagnosing and repairing devices and device drivers.
2. Description of the Related Art
When the personal computer was first introduced in the late 1970s and early-to-mid 1980s, peripheral devices such as printers, modems, scanners, hard drives, and other such accessories had to be custom designed to work with a specific type of PC. A printer, for example, required a hardware interface that connected with one of the proprietary ports of a given PC or that connected with a bus card that complied with the proprietary bus design of a given PC.
To enable programs to communicate with such devices, each device manufacturer needed to provide special device driver software. This special software established an interface between one or more particular software programs running on a given PC, such as a particular word processor, and that manufacturer's device, such as a particular printer. Preferably, this special device driver software established an interface to the operating system of the PC and communicated through the operating system with the particular software programs, so that only one device driver was needed for each device connected to a given PC. But in these early years, this could not always be arranged because of speed and other limitations of the early PC operating systems. Thus, separate device drivers were frequently required for each separate software program on each different PC.
Each device was connected to a particular type of port, such as a Centronics parallel port (PC) or RS-232 serial port (PC) or RS-422 serial port (Mac “serial port” and “local talk network”), or to a particular bus, such as the PC's ISA bus or the Apple's NuBus. Device driver for each device communicated with that device by communicating with the port or the bus to which that device was connected.
By the early 1990s, the situation had improved somewhat with the introduction of fairly standardized hardware and software interfaces for such devices. These include the standardized Ethernet connector and its associated software, which can network to many peripheral devices; the standardized universal serial bus port (USB port) and its associated software, which also supports the addressing of many different devices; and the modern PC parallel port, which now supports several high-speed protocols for bi-directional communications between a PC and devices complying with IEEE Standard 1284. These interfaces have now displaced almost entirely the earlier proprietary ports, busses, and protocols on both Apple Macintosh and IBM PC compatible computers worldwide. In addition, modern operating systems on both Apple and IBM PC computers have standardized the interfaces between individual programs and all device drivers to such an extent that device drivers, while still having to be customized to the needs of particular devices, can now have a standard interface with the operating system. Unfortunately, operating systems, even those from the same vendor, still come in several different and incompatible varieties each of which requires a customized device driver. Thus, a given manufacturer of, say, a particular type of printer may need to provide USB, parallel port, and Ethernet device drivers not only for the Macintosh and the PC compatibles but also for various operating system versions on each of these platforms.
Further advances have occurred in the abilities of operating systems to enumerate the specific identities of the various devices that may be connected to a computer at any given time. For example, through a protocol known as “Plug-and-Play,” all of the modern Microsoft Windows operating systems, starting with version 95, are now able to interrogate their various buses and ports to determine what devices are connected to a computer. Devices have also been designed to respond to such enumeration requests by not only identifying themselves, but also by identifying in some manner the driver software which they require, such that operating systems may then prompt the user to find and to present the appropriate driver software for installation as part of the operating system to support the operation of each such device.
All of this standardization has promoted keen competition among device product designers. They may equip their devices with one of a very small number of hardware interfaces, and then they need merely supply driver software appropriate to the device and matching the specifics of the operating system installed on a given PC. All of this has made it fairly simple to connect a new device, to install its driver, and to have them both operating. In most cases, a new device and its driver may be installed while a computer is operating, although the computer may need to be restarted to complete the driver installation.
Even given all of these advances, the vendors of devices still find that their users have a difficult time keeping the devices fully operative, and accordingly numerous telephone support requests are received from customers whose devices are not operating properly. Of these calls, only about 10 percent result from hardware-specific problems arising because of mechanical or electrical malfunctions of a device. The remainder of the calls relate to various software problems—about ninety percent of all calls received.
In many cases, the user's problem may be identified by performing simple tests to see if a device and its driver software are both installed, running, and communicating with the computer's operating system. Some problems may be solved by providing the user with a newer version of a driver or by reinstalling the existing driver. While skilled computer technicians can resolve these types of problems with little or no assistance, many computer owners, users, and operators lack the technical expertise to figure out how to detect and solve such problems on their own.
The software problems normally fall into one of the following scenarios:
The device was never installed properly.
The device is not able to communicate with the computer.
The device is using an incorrect driver. Typically, the customer has installed the device but has installed an incorrect driver, one not suited for the particular device.
The computer is using an older, outdated version of the driver. The driver vendor may have a newer version of the driver, but the customer doesn't know about this and is not benefiting from fixes and enhancements to the software.
The customer is using an incorrect driver for the operating system installed on the computer. This typically occurs when a customer upgrades to a different operating system and only then discovers that the drivers installed on the computer no longer work with the newly installed operating system.
The computer is using a device driver having a chosen human language that differs from that of the operating system and of the user. For example, an English language driver may be installed with an operating system that is set to work in Spanish for a Spanish speaking user.
The device driver did not successfully install completely. For example, some of its dependent files are not installed upon the computer or are otherwise damaged or incorrect.
Other device problems are possible. Some may be correctable by the user, but others may require the attention of a skilled technician.
A number of automated services are known that can assist one in detecting and correcting some of these problems. Among others, Microsoft's “Windows Update” service is now able to detect the drivers associated with the Windows 2000 and XP operating systems, check an external database of driver updates, and present the user with a list of suggested updated versions of driver software for installation on a computer. But other than proposing upgrades for drivers, this service does not otherwise assist in diagnosing hardware and software problems originating in devices, their drivers, or their connections, and in exploring and presenting possible solutions.
Hewlett-Packard has a service named “HP INSTANT SUPPORT” (service mark) which includes and uses software designed by Motive Communications, Inc. Briefly described, when a user requests support (from the “HP INSTANT SUPPORT” website), the user's computer downloads and receives a user support program named “TUNER” (a trademark of Motive Communications, Inc.). This TUNER program maintains an updated set of web pages (and the like) on the user's computer and assists the user with various self-service tasks as well as with seeking assistance.
Another way for a user to gain assistance is to contact a support center through the Internet, either by filling out an on-line form or by sending an e-mail to the support center. In either case, the user describes the problem they are having along with identifying the product they are using and waits for a response from the support center, which could either take the form of an automated response based on various criteria in the support request or a custom response created by a support specialist. However, unless the user has included specific information about the device and the health of the device's drivers in their request, none of this information is available to help the support center trouble-shoot effectively or suggest solutions based on driver information. The user is unlikely to include specific device and driver information in the request because the user is unlikely to know that it is relevant, where to find the information, and how to collect all of the relevant information. A further problem is that hardware diagnostic tools used in the industry do not have the ability to separate driver problems from hardware problems. Accordingly, there is a need for a device repairer that integrates the ability to solve both software problems and hardware problems.